package GUI.almacen;

import items.Item;
import items.Pedido;
import items.PedidoContenedor;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.swing.JDialog;
import javax.swing.JOptionPane;

public class Pedidos extends JDialog {
 //SOLO ESTA CONSTRUIDO PARA ELEMENTOS DEL PROVEEDOR1, SI LE DAN A OTRO PETA POR FALTA DE INFORMACION
//SE NECESITA CARGAR
	private static final long serialVersionUID = 1L;
	private Cabecera panelNorte;
	private PedidosSur panelSur;
	private PedidosCentro panelCentro;
	private PedidoContenedor _pedidos;
	private PedidosOeste panelOeste;
	private PedidosEste panelEste;
//	private ContenedordeCompra _contenedorDeCompra;
//	private AlmacenContenedor _almacenContenedor;
	private int id=1; 
	
	public Pedidos() {
		build();
		configuracion_ventana();
	}

	private void configuracion_ventana() {
		
		this.setTitle("G-Market Pedidos");
		this.pack();
		this.setSize(new Dimension(900,680));
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.setModal(true);
		this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
		
	}

	private void build(){
		//importante!!!!!!!!!!!
	   this._pedidos=new PedidoContenedor();
	   
	   this.getContentPane().setLayout(new BorderLayout());
	   
	   //NORTE
	   panelNorte= new Cabecera("Pedidos");
	   this.getContentPane().add(panelNorte,BorderLayout.NORTH);
      
	   //OESTE
       panelOeste= new PedidosOeste(this);
       this.getContentPane().add(panelOeste,BorderLayout.WEST);
       
	   panelEste= new PedidosEste(this);
	   this.getContentPane().add(panelEste,BorderLayout.EAST);
       //CENTRO
	   panelCentro= new PedidosCentro(this);
	   this.getContentPane().add(panelCentro,BorderLayout.CENTER);
		
		
	   //SUR
       panelSur= new PedidosSur(this); 
       this.getContentPane().add(panelSur,BorderLayout.SOUTH);

	}


public void llamar_a_proveedor(String nombreproveedor) { 
	 DialogoCompraProductos _ndpp= new DialogoCompraProductos(nombreproveedor, this);
	 _ndpp.setVisible(true);
}

 

public void meter_lista_de_pedido(ArrayList<Item> lista_del_pedido,String dameTotal,String nombreProveedor) {
    GregorianCalendar fecha= new GregorianCalendar();
    Date date= fecha.getTime();
    DateFormat dateFormat= DateFormat.getDateInstance();
    String hoy=dateFormat.format(date);
    
    
	 Pedido paquete= new Pedido(id,nombreProveedor,hoy, Estado.PENDIENTE.toString(), "", dameTotal,lista_del_pedido);
	 _pedidos.agregar_paquete(paquete);
	 panelCentro.actualizarPedidos();
	 id++;
}



public void modificar_elemento_de_pedido(int id,String estado,String notas) {	
	int indice=0;
	int tamanho=_pedidos.dame_toda_la_lista().size();
	Pedido elementoEncontrado=null;
	boolean encontrado=false;
	while(indice<tamanho&&!encontrado){
		elementoEncontrado=_pedidos.dame_toda_la_lista().get(indice);
		if(elementoEncontrado.igualAlElemento(id))
			encontrado=true;
		
		indice++;
	}
	if(encontrado){
		if(elementoEncontrado.getEstado().equalsIgnoreCase(Estado.CANCELADO.toString())){
			JOptionPane.showMessageDialog( this, "Pedido Cancelado", "Limpie Tabla", JOptionPane.WARNING_MESSAGE );
            return;
		}else if(elementoEncontrado.getEstado().equalsIgnoreCase(Estado.RECIBIDO.toString())){
			JOptionPane.showMessageDialog( this, "Pedido Recibido", "Transfiera su informacion", JOptionPane.WARNING_MESSAGE );
            return;
		}
		else{
		 elementoEncontrado.setEstado(estado);
		 elementoEncontrado.setNotas(notas);
		 panelCentro.actualizarPedidos();
		 }
		
	}	
	

}

public void limpiar_tabla_cancelados() {

	Pedido elementoEncontrado=null;
	for(int i=0;i<_pedidos.dame_toda_la_lista().size();i++){
		elementoEncontrado=_pedidos.dame_toda_la_lista().get(i );
		if(elementoEncontrado.getEstado().equalsIgnoreCase(Estado.CANCELADO.toString())){
			_pedidos.eliminar_paquete(elementoEncontrado);	
		}
	 
	 }
  panelCentro.actualizarPedidos();
		
}
 
 
public Pedido dame_el_pedido(int id){
	return _pedidos.buscarPedido(id);
}

public PedidoContenedor dame_la_lista(){
	return this._pedidos;
  }

public void dame_el_pedido_estado_recibido(){
	
	int id,cantidad;
	String nombre,categoria,marca,fechaCaducidad;
	double precio;
	ArrayList<Item > _listadeItemsRecibidos= new ArrayList<Item>();
	Item items=null;
	Pedido  elementos=null;
 
	
	for(int i=0;i<_pedidos.dame_toda_la_lista().size();i++){
		elementos=_pedidos.dame_toda_la_lista().get(i);
		if(elementos.getEstado().equalsIgnoreCase(Estado.RECIBIDO.toString())){
			for(int j=0;j<elementos.getListaPedidos().size();j++){
				id=elementos.getListaPedidos().get(i).getID();
				nombre=elementos.getListaPedidos().get(i).getNombre();
				categoria=elementos.getListaPedidos().get(i).getDescripcion();
				marca= elementos.getListaPedidos().get(i).getMarca();
				precio= elementos.getListaPedidos().get(i).getPrecio();
				cantidad=elementos.getListaPedidos().get(i).getCantidad();
				fechaCaducidad=elementos.getListaPedidos().get(i).getFechaCaducidad();
				items=new Item(id, nombre, categoria, marca, precio, cantidad, fechaCaducidad);
		        _listadeItemsRecibidos.add(items);
			}
		}
	}
	
	//UN PEDIDO TIENE -> ID,PROVEEDOR,FECHA,ESTADO,NOTAS,IMPORTETOTAL Y LISTA DE PEDIDO
	//EL PEDIDO SE METE EN UN ARRAYLIST DE PEDIDOS ->PEDIDOCONTENEDOR
	//ENTONCES TENEMOS: PEDIDOCONTENEDOR[PEDIDO[LISTADEARTICULOS]]
	//LUEGO -> RECORREMOS EL ARRAY CON PEDIDOS -> MIRAMOS QUE SEA "RECIBIDO" , SI LO ES
	// Y QUEREMOS OBTENER SUS ARTICULOS -> RECORREMOS LA LISTA DE ARTICULOS DEL PEDIDO
	//CON ELEMENTOS.getListaPedidos().get(i), Y ASI PODEMOS OBTENER LOS DATOS DEL ARTICULO
	//OTRA OPCION ES METERLO DIRECTAMENTE COMO OBJETO ITEM.
 
	 
}



}


